const TreeNode = require('./binary_tree_chain')


/**
  * 
  * @param {*} preOrd 先序遍历序列
  * @param {*} inOrd 中序遍历序列
  * @param {*} i 先序第一个元素的下标
  * @param {*} j 先序最后一个元素的下标
  * @param {*} k 中序第一个元素的下标
  * @param {*} h 中序最后一个元素的下标
  * @param {*} root 根元素
  */
 function preInOrder(preOrd, inOrd, i, j, k, h, node) {
    node = new TreeNode()
     node.data = preOrd[i] // 二叉树的根
     let m = k
     while (preOrd[i] !== inOrd[m]) {
         m++
     }
     if (m === k) {
        node.leftChild = null
     } else {
         preInOrder(preOrd, inOrd, i + 1, i + m - k, k, m - 1, node.leftChild)
     }
     if (m === h) {
         node.rightChild = null
     } else {
         preInOrder(preOrd, inOrd, i + m - k + 1, j, m + 1, h, node.rightChild)
     }
     console.log(node);
     
 }

 const a1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
 const a2 = ['C', 'B', 'D', 'A', 'E', 'G', 'F']
 const root = null
 preInOrder(a1, a2, 0, 6, 0, 6, root)
 console.log(root)